package co.gov.medellin.ssti.sub.model.dao.impl;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcDaoSupport;

import co.gov.medellin.ssti.sub.model.dao.InterfazMELDAO;
import co.gov.medellin.ssti.sub.model.vo.BeneficiarioVO;
import co.gov.medellin.ssti.sub.model.vo.InterfazMELVO;

public class InterfazMELDAOImpl2 extends NamedParameterJdbcDaoSupport implements
		InterfazMELDAO {

	public Collection<InterfazMELVO> findCamposGenericos(BeneficiarioVO bene) {
		Map<String, Object> namedParameters = new HashMap<String, Object>();

		List<InterfazMELVO> campos = null;

		StringBuffer query = new StringBuffer(
				"SELECT * FROM vcs_ben_mel_campos_basicos ");
		if (bene.getTipoDocumento() != null
				&& !bene.getTipoDocumento().equalsIgnoreCase("")
				&& bene.getNumeroDocumento() != null
				&& !bene.getNumeroDocumento().equalsIgnoreCase("")) {

			query.append(" WHERE numerodocumento = :numerodocumento AND tipodocumento = :tipodocumento ");
			namedParameters.put("numerodocumento", bene.getNumeroDocumento());
			namedParameters.put("tipodocumento", bene.getTipoDocumento());

			campos = getNamedParameterJdbcTemplate().query(query.toString(),
					namedParameters, new RowMapper<InterfazMELVO>() {

						public InterfazMELVO mapRow(ResultSet rs, int rowNum)
								throws SQLException {
							InterfazMELVO vo = new InterfazMELVO();
							vo.setNumeroDocumento(rs
									.getString("NUMERODOCUMENTO"));
							vo.setTipoDocumento(rs.getString("TIPODOCUMENTO"));
							vo.setCedulaAcu(rs.getString("CEDACU"));
							vo.setCedulaMadre(rs.getString("CEDMADRE"));
							vo.setCedulaPadre(rs.getString("CEDPADRE"));
							vo.setDirInstitucion(rs
									.getString("DIR_INSTITUCION"));
							vo.setDirSede(rs.getString("DIRECCION_SEDE"));
							vo.setGrado(rs.getString("GRADO"));
							vo.setJornada(rs.getString("JORNADA"));
							vo.setMailInstitucion(rs
									.getString("EMAIL_INSTITUCION"));
							vo.setNomAcu(rs.getString("NOMACU"));
							vo.setNomInstitucion(rs
									.getString("nombre_institucion"));
							vo.setNomMadre(rs.getString("NOMMADRE"));
							vo.setNomPadre(rs.getString("NOMPADRE"));
							vo.setNomSede(rs.getString("nombre_sede"));
							vo.setTelAcu(rs.getString("AL_TELE_RESI_ACUD"));
							vo.setTelInstitucion(rs
									.getString("TELS_INSTITUCION"));
							vo.setTelMadre(rs.getString("TELMADRE"));
							vo.setTelPadre(rs.getString("TELPADRE"));
							vo.setTelSede(rs.getString("TELEFONO_SEDE"));
							vo.setNucleo(rs.getString("NUCLEO"));
							vo.setNivelSisben(rs.getString("AL_NIVE_SISB"));
							vo.setPuntajeSisben(rs.getString("AL_PUNT_SISB"));
							return vo;
						}
					});
		}
		return campos;
	}
}
